/**
 * 设备上报功能模块
 * @param {Object} config - 配置项对象
 * @param {function} config.reportMethod - 设备上报方式的处理函数
 * @param {function} config.reportDataHandler - 上报数据处理函数
 * @param {function} config.errorHandler - 异常处理函数
 * @returns {Object} - 包含上报数据方法的对象
 */
export default function(config) {
  const { reportMethod, reportDataHandler, errorHandler } = config;
  let measureData = null;

  /**
   * 设置测量数据
   * @param {Object} data - 测量数据对象
   */
  const setMeasureData = (data) => {
    measureData = data;
  };

  /**
   * 上报数据
   */
  const reportData = () => {
    if (!measureData) {
      errorHandler(ErrorTypes.NO_MEASUREMENT_DATA, '没有测量数据可供上报', new Error('没有测量数据可供上报'));
      return;
    }

    const processedData = reportDataHandler(measureData);
    try {
      reportMethod(processedData);
    } catch (error) {
      errorHandler(ErrorTypes.NO_MEASUREMENT_DATA, error.message, error);
    }
  };

  return { reportData, setMeasureData };
};
